﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace APILocawebGateway.VISA
{

    /// <summary>
    /// Esta é a classe usada para configurar o Gerenciador de Requisições Visa
    /// </summary>
    public sealed class ConfiguracaoVISA
    {
        #region Properties


        private FormaPagamento _formaPagamento;
        public FormaPagamento FormaPagamento
        {
            get { return _formaPagamento; }
            set { _formaPagamento = value; }
        }

        private string _urlRetornoVisa;
        public string UrlRetornoVisa
        {
            get { return _urlRetornoVisa; }
            set { _urlRetornoVisa = value; }
        }

        private string _afiliacao;
        public string Afiliacao
        {
            get { return _afiliacao; }
            set { _afiliacao = value; }
        }

        private IAmbiente _ambiente;
        public IAmbiente Ambiente
        {
            get { return _ambiente; }
            set { _ambiente = value; }
        }

        private string _identificacao;
        public string Identificacao
        {
            get { return _identificacao; }
            set { _identificacao = value; }
        }

        #endregion

        /// <summary>
        /// Este método cria um objeto de configuração de acordo com os parâmetros passados no construtor
        /// </summary>
        /// <param name="afiliacao">Numero de afiliação junto a operadora VISA</param>
        /// <param name="formaPagamento">Uma das formas de pagamento dispovíveis no enum FormaPagamento</param>
        /// <param name="quantidadeParcelas">Quantidade de parcelas com 3 caracteres</param>
        /// <param name="ambiente"> Uma das Classes que implementam a interface IAmbiente usar a Classe APILocawebGateway.VISA.AMBIENTE</param>
        /// <param name="identificacao">Nº de identificação na locaweb</param>
        /// <param name="urlRetornoVisa">URL que será usada para retorno do processo VISA</param>
        public ConfiguracaoVISA(String afiliacao, FormaPagamento formaPagamento, IAmbiente ambiente, String identificacao, String urlRetornoVisa)
        {
            this.FormaPagamento = formaPagamento;
            this.UrlRetornoVisa = urlRetornoVisa;
            this.Afiliacao = afiliacao;
            this.Ambiente = ambiente;
            this.Identificacao = identificacao;
            this.UrlRetornoVisa = urlRetornoVisa;
        }




    }
    public enum FormaPagamento
    {
        CreditoaVista = 1, ParceladoLoja = 2, ParcAdministradora = 3
    }


}
